#include "game.h"
//haha
//布置雷 //随机生成雷 是雷的话放'1'
void set_boom(char arr[ROWS][COLS],int row,int col)
{
    //随机生成雷 是雷的话放'1'

    //坐标
    int x=0;
    int y=0;
    int count=0;//统计布置雷de个数
    //生成雷的合法性 
    while(count<fundamental)
    {
        x=rand()%row+1;
        y=rand()%col+1; //1-9
         if(arr[x][y]=='0')
        {
            arr[x][y]='1';
            count ++;
        }
    }
   
}

//雷棋盘的初始化  全是'0'
void Intarr(char arr[ROWS][COLS],int row,int col)
{
    int i=0;
    int j=0;
    for(i=1;i<=row;i++)
    {
        for(j=1;j<=col;j++)
        {
            arr[i][j]='0';
        }
    }
}
//初始化显示盘
void Intboard(char board[ROW][COL],int row,int col)
{
    int i=0;
    int j=0;
    for(i=0;i<row;i++)
    {
        for(j=0;j<col;j++)
        {
            board[i][j]='*';
        }
    }
}
//打印雷盘
void display(char arr[ROWS][COLS],int row,int col)
{
    int i=0;
    int j=0;
    printf("------扫雷-------\n");
    for(i=0;i<=row;i++)
    {
        if(i==0)
        printf("  ");
        else if(i>0)
        printf("%d ",i);
    }
    printf("\n");
    for(i=1;i<=row;i++)
    {
        printf("%d|",i);
        for(j=1;j<=col;j++)
        {
            printf("%c ",arr[i][j]);
        }
        printf("\n");
    }
    printf("------扫雷-------\n");

}
//打印显示盘
void print(char board[ROW][COL],int row,int col)
{
    int i=0;
    int j=0;
    printf("------扫雷-------\n");
    for(i=0;i<=row;i++)
    {
        if(i==0)
        printf("  ");
        else if(i>0)
        printf("%d ",i);
    }
    printf("\n");
    for(i=0;i<row;i++)
    {
        printf("%d|",i+1);
        for(j=0;j<col;j++)
        {
            printf("%c ",board[i][j]);
        }
        printf("\n");
    }
    printf("------扫雷-------\n");

}


// 找雷
int find_boom(char arr[ROWS][COLS],char board[ROW][COL],int row,int col)
{
    //玩家输入坐标
   
    int x=0;
    int y=0;
    int s=row*col; //游戏结束判断
    //判断附近八个格子有几个雷，那么这个位置显示几
    //1.判断玩家输入的合法性
    //2.合法就判断周围格子 不合法就返回 -->输入步骤
    while(1)
    {
        printf("请输入你要排查的坐标:->\n");
        scanf("%d %d",&x,&y);
        if(x>row || y>col || x<0 || y<0)
        {
            printf("输入不合法请重新输入\n");
        }
        else if(board[x-1][y-1]!='*')
        {
            printf("该位置已经筛查过，请重新输入\n");
        }
        else
        {
            //判断
            //1.玩家输入的坐标是雷 直接游戏结束
            //2.输入的坐标不是雷 接着判断
            if(arr[x][y]=='1')//是雷-->游戏结束
            {
                
                printf("走狗屎运了，踩到了雷，你被炸死了！\n");
                printf("以下是本局雷的信息：\n");
                //打印出来雷盘结果让玩家知道
                display(arr,ROW,COL);
                break; //不再进行输入操作
            }
            else
            {
                int ret=sum(arr,x,y);
                board[x-1][y-1]=ret+'0';
                s--;
            }
            //display(arr,ROW,COL);
            print(board,ROW,COL);

        }
        if(s==fundamental)
        {
            printf("恭喜你获胜了！！！\n");
            break;
        }
    }
    return 0;
}

//判断周围格子几个雷
int sum(char arr[ROWS][COLS],int x,int y)
{
    int i=0;
    int j=0;
    int con=0;
    for(i=-1;i<=1;i++)
    {
        for(j=-1;j<=1;j++)
        {
            if(arr[x+i][y+j]=='1')
            con++;
        }
    }
    return con;
}
